import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JMenuItem;

public abstract class Vue extends JFrame {

	private static final long serialVersionUID = 1L;

	final static int initiale = 0, inter1 = 1, inter2 = 2, inter3 = 3,
			inter4 = 4, finale = 5;

	/* ATTRIBUTS */
	private Controleur controleur;
	private int etat;

	/* CONSTRUCTEUR */
	public Vue(Controleur controleur) {
		setControleur(controleur);
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);

		JMenu menuMenu = new JMenu("Menu");
		menuBar.add(menuMenu);

		JMenuItem menuItemQuitter = new JMenuItem("Quitter");
		menuItemQuitter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue();
			}
		});

		JMenuItem menuItemAjouterUneClasse = new JMenuItem("Ajouter une classe");
		menuItemAjouterUneClasse.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().ajouterClasse();
			}
		});
		
		JMenuItem menuItemAjouterUneRace = new JMenuItem("Ajouter une race");
		menuItemAjouterUneRace.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().ajouterRace();
			}
		});
		
		JMenuItem menuItemSupprimerUneClasse = new JMenuItem(
				"Supprimer une classe");
		menuItemSupprimerUneClasse.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().supprimerClasse();
			}
		});		
		
		JMenuItem menuItemSupprimerUneRace = new JMenuItem("Supprimer une race");
		menuItemSupprimerUneRace.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().supprimerRace();
			}
		});		
		
		menuMenu.add(menuItemAjouterUneClasse);
		menuMenu.add(menuItemAjouterUneRace);
		menuMenu.add(menuItemSupprimerUneClasse);
		menuMenu.add(menuItemSupprimerUneRace);
		menuMenu.add(menuItemQuitter);

		JMenu menuMembre = new JMenu("Membre");
		menuBar.add(menuMembre);

		JMenuItem menuItemAjouterUnMembre = new JMenuItem("Ajouter un membre");
		menuItemAjouterUnMembre.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().ajouterMembre();
			}
		});

		JMenuItem menuItemAjouterUnGrade = new JMenuItem("Ajouter un grade");
		menuItemAjouterUnGrade.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().ajouterGrade();
			}
		});

		JMenuItem menuItemAjouterUnPersonnage = new JMenuItem(
				"Ajouter un personnage");
		menuItemAjouterUnPersonnage.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().ajouterPerso();
			}
		});
		
		JMenuItem menuItemModifierUnMembre = new JMenuItem("Modifier un membre");
		menuItemModifierUnMembre.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().modifierMembre();
			}
		});
		
		JMenuItem menuItemModifierUnPersonnage = new JMenuItem("Modifier un personnage");
		menuItemModifierUnPersonnage.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().modifierPerso();
			}
		});
		
		JMenuItem menuItemSupprimerUnGrade = new JMenuItem("Supprimer un grade");
		menuItemSupprimerUnGrade.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().supprimerGrade();
			}
		});

		JMenuItem menuItemSupprimerUnPersonnage = new JMenuItem(
				"Supprimer un personnage");
		menuItemSupprimerUnPersonnage.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().supprimerPerso();
			}
		});

		JMenuItem menuItemSupprimerUnMembre = new JMenuItem("Supprimer un membre");
		menuItemSupprimerUnMembre.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().supprimerMembre();
			}
		});
		
		menuMembre.add(menuItemAjouterUnGrade);
		menuMembre.add(menuItemAjouterUnMembre);
		menuMembre.add(menuItemAjouterUnPersonnage);
		menuMembre.add(menuItemModifierUnMembre);
		menuMembre.add(menuItemModifierUnPersonnage);
		menuMembre.add(menuItemSupprimerUnGrade);
		menuMembre.add(menuItemSupprimerUnMembre);
		menuMembre.add(menuItemSupprimerUnPersonnage);

		getContentPane().setLayout(null);
	}

	/* CONTROLEUR */
	public Controleur getControleur() {
		return controleur;
	}

	public void setControleur(Controleur controleur) {
		this.controleur = controleur;

	}

	/* ALIMENTE */
	public void alimente() {

	}

	/* ETAT */
	public int getEtat() {
		return etat;
	}

	public void setEtat(int etat) {
		this.etat = etat;
	}
}
